home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / OSUtils.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  14.4 KB  |  528 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        OSUtils.mod
  3.  
  4.      Contains:    OS Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$IF UNDEFINED OLDROUTINENAMES*)
  21.   (*$SET OLDROUTINENAMES FALSE*)
  22. (*$END*)
  23. (*$IF UNDEFINED SystemSevenFiveOrLater *)
  24.   (*$SET SystemSevenFiveOrLater FALSE*)
  25. (*$END*)
  26. (*$IF UNDEFINED SystemSevenOrLater *)
  27.   (*$IF GENERATINGCFM *)
  28.     (*$SET SystemSevenOrLater TRUE*)
  29.   (*$ELSE*)
  30.     (*$SET SystemSevenOrLater SystemSevenFiveOrLater*)
  31.   (*$END*)
  32. (*$END*)
  33. (*$IF UNDEFINED SystemSixOrLater *)
  34.   (*$SET SystemSixOrLater SystemSevenOrLater*)
  35. (*$END*)
  36. (*$TAGS-*)
  37. (*$CALLING PASCAL*)
  38. MODULE OSUtils;
  39.  
  40. IMPORT SYSTEM, Types;
  41.  
  42. (* $PUSH*)
  43. (* $ALIGN MAC68K*)
  44. (* $LibExport+*)
  45.  
  46. CONST
  47.     useFree*                        = 0;
  48.     useATalk*                    = 1;
  49.     useAsync*                    = 2;
  50.     useExtClk*                    = 3;                            (*Externally clocked*)
  51.     useMIDI*                        = 4;
  52. (* Environs Equates *)
  53.     curSysEnvVers*                = 2;                            (*Updated to equal latest SysEnvirons version*)
  54. (* Machine Types *)
  55.     envMac*                        = -1;
  56.     envXL*                        = -2;
  57.     envMachUnknown*                = 0;
  58.     env512KE*                    = 1;
  59.     envMacPlus*                    = 2;
  60.     envSE*                        = 3;
  61.     envMacII*                    = 4;
  62.     envMacIIx*                    = 5;
  63.     envMacIIcx*                    = 6;
  64.     envSE30*                        = 7;
  65.     envPortable*                    = 8;
  66.     envMacIIci*                    = 9;
  67.     envMacIIfx*                    = 11;
  68. (* CPU types *)
  69.     envCPUUnknown*                = 0;
  70.  
  71.     env68000*                    = 1;
  72.     env68010*                    = 2;
  73.     env68020*                    = 3;
  74.     env68030*                    = 4;
  75.     env68040*                    = 5;
  76. (* Keyboard types *)
  77.     envUnknownKbd*                = 0;
  78.     envMacKbd*                    = 1;
  79.     envMacAndPad*                = 2;
  80.     envMacPlusKbd*                = 3;
  81.     envAExtendKbd*                = 4;
  82.     envStandADBKbd*                = 5;
  83.     envPrtblADBKbd*                = 6;
  84.     envPrtblISOKbd*                = 7;
  85.     envStdISOADBKbd*                = 8;
  86.     envExtISOADBKbd*                = 9;
  87.     false32b*                    = 0;                            (*24 bit addressing error*)
  88.     true32b*                        = 1;                            (*32 bit addressing error*)
  89. (* result types for RelString Call *)
  90.     sortsBefore*                    = -1;                            (*first string < second string*)
  91.     sortsEqual*                    = 0;                            (*first string* = second string*)
  92.     sortsAfter*                    = 1;                            (*first string > second string*)
  93.  
  94. (* Toggle results *)
  95.     toggleUndefined*                = 0;
  96.     toggleOK*                    = 1;
  97.     toggleBadField*                = 2;
  98.     toggleBadDelta*                = 3;
  99.     toggleBadChar*                = 4;
  100.     toggleUnknown*                = 5;
  101.     toggleBadNum*                = 6;
  102.     toggleOutOfRange*            = 7;                            (*synonym for toggleErr3*)
  103.     toggleErr3*                    = 7;
  104.     toggleErr4*                    = 8;
  105.     toggleErr5*                    = 9;
  106. (* Date equates *)
  107.     smallDateBit*                = 31;                            (*Restrict valid date/time to range of Sound.Time global*)
  108.     togChar12HourBit*            = 30;                            (*If toggling hour by char, accept hours 1..12 only*)
  109.     togCharZCycleBit*            = 29;                            (*Modifier for togChar12HourBit*: accept hours 0..11 only*)
  110.     togDelta12HourBit*            = 28;                            (*If toggling hour up/down, restrict to 12-hour range (am/pm)*)
  111.     genCdevRangeBit*                = 27;                            (*Restrict date/time to range used by genl CDEV*)
  112.     validDateFields*                = -1;
  113.     maxDateField*                = 10;
  114.     eraMask*                        = $0001;
  115.     yearMask*                    = $0002;
  116.     monthMask*                    = $0004;
  117.     dayMask*                        = $0008;
  118.     hourMask*                    = $0010;
  119.     minuteMask*                    = $0020;
  120.     secondMask*                    = $0040;
  121.     dayOfWeekMask*                = $0080;
  122.     dayOfYearMask*                = $0100;
  123.     weekOfYearMask*                = $0200;
  124.     pmMask*                        = $0400;
  125.     dateStdMask*                    = $007F;                        (*default for ValidDate flags and ToggleDate TogglePB.togFlags*)
  126.  
  127.     eraField*                    = 0;
  128.     yearField*                    = 1;
  129.     monthField*                    = 2;
  130.     dayField*                    = 3;
  131.     hourField*                    = 4;
  132.     minuteField*                    = 5;
  133.     secondField*                    = 6;
  134.     dayOfWeekField*                = 7;
  135.     dayOfYearField*                = 8;
  136.     weekOfYearField*                = 9;
  137.     pmField*                        = 10;
  138.     res1Field*                    = 11;
  139.     res2Field*                    = 12;
  140.     res3Field*                    = 13;
  141.  
  142.     
  143. TYPE
  144.     LongDateField* = Types.SignedByte;
  145.  
  146.  
  147. CONST
  148.     dummyType*                    = 0;
  149.     vType*                        = 1;
  150.     ioQType*                        = 2;
  151.     drvQType*                    = 3;
  152.     evType*                        = 4;
  153.     fsQType*                        = 5;
  154.     sIQType*                        = 6;
  155.     dtQType*                        = 7;
  156.     nmType*                        = 8;
  157.  
  158.     
  159. TYPE
  160.     QTypes* = Types.SignedByte;
  161.  
  162.  
  163. CONST
  164.     OSTrap*                        = 0;
  165.     ToolTrap*                    = 1;
  166.  
  167.     
  168. TYPE
  169.     TrapType* = Types.SignedByte;
  170.  
  171.     SysParmType* = (*ΔΔPACKEDΔΔ*) RECORD
  172.         valid*:                    Types.UInt8;
  173.         aTalkA*:                    Types.UInt8;
  174.         aTalkB*:                    Types.UInt8;
  175.         config*:                    Types.UInt8;
  176.         portA*:                    INTEGER;
  177.         portB*:                    INTEGER;
  178.         alarm*:                    LONGINT;
  179.         font*:                    INTEGER;
  180.         kbdPrint*:                INTEGER;
  181.         volClik*:                INTEGER;
  182.         misc*:                    INTEGER;
  183.     END;
  184.  
  185.     SysPPtr* = POINTER TO SysParmType;
  186.  
  187.     QElemPtr* = POINTER TO QElem;
  188.  
  189.     QElem* = RECORD
  190.         qLink*:                    QElemPtr;
  191.         qType*:                    INTEGER;
  192.         (*ΔΔ qData*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF INTEGER;*)
  193.     END;
  194.  
  195.     QHdrPtr* = POINTER TO QHdr;
  196.  
  197.     QHdr* = RECORD
  198.         qFlags*:                    INTEGER;
  199.         qHead*:                    QElemPtr;
  200.         qTail*:                    QElemPtr;
  201.     END;
  202.  
  203.     (*
  204.         DeferredTaskProcPtr uses register based parameters on the 68k and cannot
  205.         be written in or called from a high-level language without the help of
  206.         mixed mode or assembly glue.
  207.  
  208.         In*:
  209.          => dtParam         A1.L
  210.     *)
  211.     DeferredTaskProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE OSUtils*.DeferredTask(dtParam: LONGINT); *)
  212.     DeferredTaskUPP* = Types.UniversalProcPtr;
  213.  
  214.     DeferredTask* = RECORD
  215.         qLink*:                    QElemPtr;
  216.         qType*:                    INTEGER;
  217.         dtFlags*:                INTEGER;
  218.         dtAddr*:                    DeferredTaskUPP;
  219.         dtParam*:                LONGINT;
  220.         dtReserved*:                LONGINT;
  221.     END;
  222.  
  223.     DeferredTaskPtr* = POINTER TO DeferredTask;
  224.  
  225.     SysEnvRec* = RECORD
  226.         environsVersion*:        INTEGER;
  227.         machineType*:            INTEGER;
  228.         systemVersion*:            INTEGER;
  229.         processor*:                INTEGER;
  230.         hasFPU*:                    BOOLEAN;
  231.         hasColorQD*:                BOOLEAN;
  232.         keyBoardType*:            INTEGER;
  233.         atDrvrVersNum*:            INTEGER;
  234.         sysVRefNum*:                INTEGER;
  235.     END;
  236.  
  237.     MachineLocation* = RECORD
  238.         latitude*:                Types.Fract;
  239.         longitude*:                Types.Fract;
  240.         (*ΔΔ CASE INTEGER OF
  241.         0: ( *)
  242.             dlsDelta*:                    Types.SInt8;                                (*signed byte; daylight savings delta*)
  243.            (*ΔΔ );
  244.         1: (
  245.             gmtDelta*:                    LONGINT;                            (*must mask - see documentation*)
  246.            );*)
  247.     END;
  248.  
  249.     DateTimeRec* = RECORD
  250.         year*:                    INTEGER;
  251.         month*:                    INTEGER;
  252.         day*:                    INTEGER;
  253.         hour*:                    INTEGER;
  254.         minute*:                    INTEGER;
  255.         second*:                    INTEGER;
  256.         dayOfWeek*:                INTEGER;
  257.     END;
  258.  
  259.     LongDateTime* = Types.wide;
  260.  
  261.     LongDateCvt* = RECORD
  262.         (*ΔΔ CASE INTEGER OF
  263.         0: (
  264.             c*:                            wide;
  265.            );
  266.         1: ( *)
  267.             lHigh*:                        Types.UInt32;
  268.             lLow*:                        Types.UInt32;
  269.            (*ΔΔ );*)
  270.     END;
  271.  
  272.     LongDateRec* = RECORD
  273.         (*ΔΔ CASE INTEGER OF
  274.         0: ( *)
  275.             era*:                        INTEGER;
  276.             year*:                        INTEGER;
  277.             month*:                        INTEGER;
  278.             day*:                        INTEGER;
  279.             hour*:                        INTEGER;
  280.             minute*:                        INTEGER;
  281.             second*:                        INTEGER;
  282.             dayOfWeek*:                    INTEGER;
  283.             dayOfYear*:                    INTEGER;
  284.             weekOfYear*:                    INTEGER;
  285.             pm*:                            INTEGER;
  286.             res1*:                        INTEGER;
  287.             res2*:                        INTEGER;
  288.             res3*:                        INTEGER;
  289.            (*ΔΔ );
  290.         1: (
  291.             list*:                        ARRAY 14 (*ΔΔ[0..13]ΔΔ*) OF INTEGER;            (*Index by LongDateField!*)
  292.            );
  293.         2: (
  294.             eraAlt*:                        INTEGER;
  295.             oldDate*:                    DateTimeRec;
  296.            );*)
  297.     END;
  298.  
  299.     DateDelta* = Types.SInt8;
  300.  
  301.     TogglePB* = RECORD
  302.         togFlags*:                LONGINT;                                (*caller normally sets low word to dateStdMask=$7F*)
  303.         amChars*:                Types.ResType;                                (*from LONG("itl0"), but uppercased*)
  304.         pmChars*:                Types.ResType;                                (*from LONG("itl0"), but uppercased*)
  305.         reserved*:                ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF LONGINT;
  306.     END;
  307.  
  308.     ToggleResults* = INTEGER;
  309.  
  310. CONST
  311.     uppDeferredTaskProcInfo* = $0000B802; (* Register PROCEDURE (4 bytes in A1); *)
  312.  
  313. PROCEDURE NewDeferredTaskProc*(userRoutine: DeferredTaskProcPtr): DeferredTaskUPP;
  314.     (*$IF NOT GENERATINGCFM *)
  315.     INLINE PASCAL $2E9F;
  316.     (*$END*)
  317.  
  318. PROCEDURE CallDeferredTaskProc*(dtParam: LONGINT; userRoutine: DeferredTaskUPP);
  319.     (*$IF NOT GENERATINGCFM*)
  320.     INLINE PASCAL ; (*••*)
  321.     (*To be implemented*:  Glue to move parameters into registers.*)
  322.     (*$END*)
  323.  
  324. PROCEDURE LongDateToSeconds*((*CONST*)VAR lDate: LongDateRec; VAR lSecs: LongDateTime);
  325.     (*$IF NOT GENERATINGCFM*)
  326.     INLINE PASCAL $2F3C, $8008, $FFF2, $A8B5;
  327.     (*$END*)
  328. PROCEDURE LongSecondsToDate*(VAR lSecs: LongDateTime; VAR lDate: LongDateRec);
  329.     (*$IF NOT GENERATINGCFM*)
  330.     INLINE PASCAL $2F3C, $8008, $FFF0, $A8B5;
  331.     (*$END*)
  332. PROCEDURE ToggleDate*(VAR lSecs: LongDateTime; field: Types.ByteParameter; delta: Types.ByteParameter; ch: INTEGER; (*CONST*)VAR params: TogglePB): ToggleResults;
  333.     (*$IF NOT GENERATINGCFM*)
  334.     INLINE PASCAL $2F3C, $820E, $FFEE, $A8B5;
  335.     (*$END*)
  336. PROCEDURE ValidDate*((*CONST*)VAR vDate: LongDateRec; flags: LONGINT; VAR newSecs: LongDateTime): INTEGER;
  337.     (*$IF NOT GENERATINGCFM*)
  338.     INLINE PASCAL $2F3C, $820C, $FFE4, $A8B5;
  339.     (*$END*)
  340. PROCEDURE IsMetric*(): BOOLEAN;
  341.     (*$IF NOT GENERATINGCFM*)
  342.     INLINE PASCAL $3F3C, $0004, $A9ED;
  343.     (*$END*)
  344. PROCEDURE GetSysPPtr*(): SysPPtr;
  345.     (*$IF NOT GENERATINGCFM*)
  346.     INLINE PASCAL $2EBC, $0000, $01F8;
  347.     (*$END*)
  348. PROCEDURE ReadDateTime*(VAR time: LONGINT): Types.OSErr;
  349.     (*$IF NOT GENERATINGCFM*)
  350.     INLINE PASCAL $205F, $A039, $3E80;
  351.     (*$END*)
  352. PROCEDURE GetDateTime*(VAR secs: LONGINT);
  353.     (*$IF NOT GENERATINGCFM*)
  354.     INLINE PASCAL $205F, $20B8, $020C;
  355.     (*$END*)
  356. PROCEDURE SetDateTime*(time: LONGINT): Types.OSErr;
  357.     (*$IF NOT GENERATINGCFM*)
  358.     INLINE PASCAL $201F, $A03A, $3E80;
  359.     (*$END*)
  360. PROCEDURE SetTime*((*CONST*)VAR d: DateTimeRec);
  361.     (*$IF NOT GENERATINGCFM*)
  362.     INLINE PASCAL $205F, $A9C7, $A03A;
  363.     (*$END*)
  364. PROCEDURE GetTime*(VAR d: DateTimeRec);
  365.     (*$IF NOT GENERATINGCFM*)
  366.     INLINE PASCAL $205F, $2038, $020C, $A9C6;
  367.     (*$END*)
  368. PROCEDURE DateToSeconds*((*CONST*)VAR d: DateTimeRec; VAR secs: LONGINT);
  369.     EXTERNAL PASCAL;
  370. PROCEDURE SecondsToDate*(secs: LONGINT; VAR d: DateTimeRec);
  371.     (*$IF NOT GENERATINGCFM*)
  372.     INLINE PASCAL $205F, $201F, $A9C6;
  373.     (*$END*)
  374. PROCEDURE SysBeep*(duration: INTEGER);
  375.     (*$IF NOT GENERATINGCFM*)
  376.     INLINE PASCAL $A9C8;
  377.     (*$END*)
  378. PROCEDURE DTInstall*(dtTaskPtr: DeferredTaskPtr): Types.OSErr;
  379.     (*$IF NOT GENERATINGCFM*)
  380.     INLINE PASCAL $205F, $A082, $3E80;
  381.     (*$END*)
  382. PROCEDURE GetMMUMode*(): Types.ByteParameter;
  383.     (*$IF NOT CFMSYSTEMCALLS*)
  384.     INLINE PASCAL $1EB8, $0CB2;            (* MOVE.b $0CB2,(SP) *)
  385.     (*$END*)
  386.  
  387. PROCEDURE SwapMMUMode*(VAR mode: Types.SInt8);
  388.     (*$IF NOT GENERATINGCFM*)
  389.     INLINE PASCAL $205F, $1010, $A05D, $1080;
  390.     (*$END*)
  391. (*$IF SystemSixOrLater *)
  392. PROCEDURE SysEnvirons*(versionRequested: INTEGER; VAR theWorld: SysEnvRec): Types.OSErr;
  393.     (*$IF NOT GENERATINGCFM*)
  394.     INLINE PASCAL $205F, $301F, $A090, $3E80;
  395.     (*$END*)
  396. (*$ELSE*)
  397. PROCEDURE SysEnvirons*(versionRequested: INTEGER; VAR theWorld: SysEnvRec): Types.OSErr;
  398.     EXTERNAL PASCAL;
  399. (*$END*)
  400. PROCEDURE Delay*(numTicks: LONGINT; VAR finalTicks: LONGINT);
  401.     (*$IF NOT GENERATINGCFM*)
  402.     INLINE PASCAL $225F, $205F, $A03B, $2280;
  403.     (*$END*)
  404. (*
  405.     GetTrapAddress and SetTrapAddress are obsolete and should not
  406.     be used. Always use NGetTrapAddress and NSetTrapAddress instead.
  407.     The old routines will not be supported for PowerPC apps.
  408. *)
  409. (*$IF OLDROUTINENAMES AND NOT GENERATINGCFM *)
  410. PROCEDURE GetTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
  411.     (*$IF NOT GENERATINGCFM*)
  412.     INLINE PASCAL $301F, $A146, $2E88;
  413.     (*$END*)
  414. PROCEDURE SetTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
  415.     (*$IF NOT GENERATINGCFM*)
  416.     INLINE PASCAL $301F, $205F, $A047;
  417.     (*$END*)
  418. (*$END*)
  419. PROCEDURE NGetTrapAddress*(trapNum: INTEGER; tTyp: Types.ByteParameter): Types.UniversalProcPtr;
  420.     EXTERNAL PASCAL;
  421. PROCEDURE NSetTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER; tTyp: Types.ByteParameter);
  422.     EXTERNAL PASCAL;
  423. PROCEDURE GetOSTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
  424.     (*$IF NOT GENERATINGCFM*)
  425.     INLINE PASCAL $301F, $A346, $2E88;
  426.     (*$END*)
  427. PROCEDURE SetOSTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
  428.     (*$IF NOT GENERATINGCFM*)
  429.     INLINE PASCAL $301F, $205F, $A247;
  430.     (*$END*)
  431. PROCEDURE GetToolTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
  432.     (*$IF NOT GENERATINGCFM*)
  433.     INLINE PASCAL $301F, $A746, $2E88;
  434.     (*$END*)
  435. PROCEDURE SetToolTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
  436.     (*$IF NOT GENERATINGCFM*)
  437.     INLINE PASCAL $301F, $205F, $A647;
  438.     (*$END*)
  439. PROCEDURE GetToolboxTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
  440.     (*$IF NOT GENERATINGCFM*)
  441.     INLINE PASCAL $301F, $A746, $2E88;
  442.     (*$END*)
  443. PROCEDURE SetToolboxTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
  444.     (*$IF NOT GENERATINGCFM*)
  445.     INLINE PASCAL $301F, $205F, $A647;
  446.     (*$END*)
  447. PROCEDURE WriteParam*(): Types.OSErr;
  448.     EXTERNAL PASCAL;
  449. PROCEDURE Enqueue*(qElement: QElemPtr; qHeader: QHdrPtr);
  450.     (*$IF NOT GENERATINGCFM*)
  451.     INLINE PASCAL $225F, $205F, $A96F;
  452.     (*$END*)
  453. PROCEDURE Dequeue*(qElement: QElemPtr; qHeader: QHdrPtr): Types.OSErr;
  454.     (*$IF NOT GENERATINGCFM*)
  455.     INLINE PASCAL $225F, $205F, $A96E, $3E80;
  456.     (*$END*)
  457. PROCEDURE SetCurrentA5*(): LONGINT;
  458.     (*$IF NOT GENERATINGCFM*)
  459.     INLINE PASCAL $2E8D, $2A78, $0904;
  460.     (*$END*)
  461. PROCEDURE SetA5*(newA5: LONGINT): LONGINT;
  462.     (*$IF NOT GENERATINGCFM*)
  463.     INLINE PASCAL $2F4D, $0004, $2A5F;
  464.     (*$END*)
  465. (*$IF NOT SystemSevenOrLater *)
  466. PROCEDURE Environs*(VAR rom: INTEGER; VAR machine: INTEGER);
  467.     EXTERNAL PASCAL;
  468. (*$END*)
  469. PROCEDURE InitUtil*(): Types.OSErr;
  470.     (*$IF NOT GENERATINGCFM*)
  471.     INLINE PASCAL $A03F, $3E80;
  472.     (*$END*)
  473. (*$IF GENERATING68K *)
  474. PROCEDURE SwapInstructionCache*(cacheEnable: BOOLEAN): BOOLEAN;
  475.     EXTERNAL PASCAL;
  476. PROCEDURE FlushInstructionCache*;
  477.     (*$IF NOT GENERATINGCFM*)
  478.     INLINE PASCAL $7001, $A098;
  479.     (*$END*)
  480. PROCEDURE SwapDataCache*(cacheEnable: BOOLEAN): BOOLEAN;
  481.     EXTERNAL PASCAL;
  482. PROCEDURE FlushDataCache*;
  483.     (*$IF NOT GENERATINGCFM*)
  484.     INLINE PASCAL $7003, $A098;
  485.     (*$END*)
  486. PROCEDURE FlushCodeCache*;
  487.     (*$IF NOT GENERATINGCFM*)
  488.     INLINE PASCAL $A0BD;
  489.     (*$END*)
  490. PROCEDURE FlushCodeCacheRange*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT);
  491.     (*$IF NOT GENERATINGCFM*)
  492.     INLINE PASCAL $225F, $205F, $7009, $A098;
  493.     (*$END*)
  494. (*$END*)
  495. PROCEDURE ReadLocation*(VAR loc: MachineLocation);
  496.     (*$IF NOT GENERATINGCFM*)
  497.     INLINE PASCAL $205F, $203C, $000C, $00E4, $A051;
  498.     (*$END*)
  499. PROCEDURE WriteLocation*((*CONST*)VAR loc: MachineLocation);
  500.     (*$IF NOT GENERATINGCFM*)
  501.     INLINE PASCAL $205F, $203C, $000C, $00E4, $A052;
  502.     (*$END*)
  503. (*$IF OLDROUTINENAMES *)
  504. PROCEDURE LongDate2Secs*((*CONST*)VAR lDate: LongDateRec; VAR lSecs: LongDateTime);
  505.     (*$IF NOT GENERATINGCFM*)
  506.     INLINE PASCAL $2F3C, $8008, $FFF2, $A8B5;
  507.     (*$END*)
  508. PROCEDURE LongSecs2Date*(VAR lSecs: LongDateTime; VAR lDate: LongDateRec);
  509.     (*$IF NOT GENERATINGCFM*)
  510.     INLINE PASCAL $2F3C, $8008, $FFF0, $A8B5;
  511.     (*$END*)
  512. PROCEDURE IUMetric*(): BOOLEAN;
  513.     (*$IF NOT GENERATINGCFM*)
  514.     INLINE PASCAL $3F3C, $0004, $A9ED;
  515.     (*$END*)
  516. PROCEDURE Date2Secs*((*CONST*)VAR d: DateTimeRec; VAR secs: LONGINT);
  517.     EXTERNAL PASCAL;
  518. PROCEDURE Secs2Date*(secs: LONGINT; VAR d: DateTimeRec);
  519.     (*$IF NOT GENERATINGCFM*)
  520.     INLINE PASCAL $205F, $201F, $A9C6;
  521.     (*$END*)
  522. (*$END*)
  523.  
  524. (* $ALIGN RESET*)
  525. (* $POP*)
  526.  
  527.  END OSUtils.
  528.